package com.example.culturemanage.culture

import android.app.DatePickerDialog
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.alibaba.android.arouter.facade.annotation.Route
import com.example.culturemanage.CultureManageViewModel
import com.example.culturemanage.R
import com.example.culturemanage.databinding.ActivityAddCultureBinding
import com.example.lib_base.mvvm.BaseActivity
import dagger.hilt.android.AndroidEntryPoint
import android.widget.ArrayAdapter
import android.widget.Spinner
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import com.blankj.utilcode.util.ToastUtils
import java.util.Calendar

@AndroidEntryPoint
@Route(path = "/culturemanage/AddCultureActivity")
class AddCultureActivity : BaseActivity<ActivityAddCultureBinding,CultureManageViewModel>() {
    // 图片选择与上传逻辑
    private val selectedImageUris = mutableListOf<String>()
    private lateinit var pickImageLauncher: ActivityResultLauncher<Array<String>>

    override fun initView() {
        // 初始化图片选择器，用于从文档中选择图片
        pickImageLauncher = registerForActivityResult(
            // 使用OpenDocument契约来选择文档（图片）
            ActivityResultContracts.OpenDocument()
            // 处理返回的URI结果
        ) { uri ->
            uri?.let {
                // 清空之前选择的图片列表
                selectedImageUris.clear()
                // 将新选择的图片URI添加到列表中
                selectedImageUris.add(it.toString())
                // 在ImageView中显示选中的图片
                binding.ivAddImage.setImageURI(it)
                // 可选：持久化权限
                contentResolver.takePersistableUriPermission(
                    it,
                    Intent.FLAG_GRANT_READ_URI_PERMISSION
                )
            }
        }
        // 为图片选择按钮设置点击监听器
        binding.ivAddImage.setOnClickListener {
            // 启动图片选择器，限定只选择图片类型文件
            pickImageLauncher.launch(arrayOf("image/*"))
        }


       /**
 * 初始化界面组件及事件监听，包括新闻类型下拉框、返回按钮、发布按钮和日期选择器。
 *
 * 该方法完成以下功能：
 * 1. 初始化新闻类型下拉框并设置适配器；
 * 2. 设置返回按钮点击事件，关闭当前 Activity；
 * 3. 设置发布按钮点击事件，收集用户输入并构建参数 Map，调用 ViewModel 提交数据；
 * 4. 设置日期选择器点击事件，弹出日期选择对话框并更新 EditText 显示。
 */
// 新闻类型下拉框选项
    val newsTypes = listOf("新闻", "公告", "活动", "通知", "其他")
    val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, newsTypes)
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    binding.spinnerType.adapter = adapter
    binding.back.setOnClickListener { finish() }

    // 日期选择器逻辑：弹出日期选择对话框并将选择的日期格式化为 "YYYY-MM-DD" 显示在 EditText 中
    binding.ivDate.setOnClickListener {
        val calendar = Calendar.getInstance()
        val year = calendar.get(Calendar.YEAR)
        val month = calendar.get(Calendar.MONTH)
        val day = calendar.get(Calendar.DAY_OF_MONTH)
        val datePickerDialog = DatePickerDialog(this, { _, y, m, d ->
            val dateStr = String.format("%04d-%02d-%02d", y, m + 1, d)
            binding.etDate.setText(dateStr)
        }, year, month, day)
        datePickerDialog.show()
    }


    // 发布按钮点击事件
    binding.btnPublish.setOnClickListener {
        val map = mutableMapOf<String, Any>()
        map["title"] = binding.etTitle.text.toString()
        map["content"] = binding.etContent.text.toString()
        map["type"] = binding.spinnerType.selectedItem.toString()
        map["publisher"] = "小王"
        map["publishDate"] = binding.etDate.text.toString().trim()
        // 只上传用户选择的图片
        map["images"] = selectedImageUris.toList()
        map["published"] = true
        map["approved"] = true
        vm.addCulture(map)
    }

    }
    override fun initData() {
        vm.addCultureSuccess.observe(this){
            Log.d("addculture", "initData: "+it.toString())
            ToastUtils.showShort("添加成功")
            finish()
        }

    }
}